package com.qcby.controller;

import com.alibaba.fastjson.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.UUID;

@Controller
@RequestMapping("/upload")
public class UploadController {
    private static final Logger logger = LoggerFactory.getLogger(UploadController.class);
    /**
     * 图片上传的具体方法
     * @param request
     * @param response
     * @param picfile
     * @param fileType
     * @param lastImg
     * @throws IOException
     */
    @RequestMapping("/uploadFile")
   public void uploadFile(HttpServletRequest request, HttpServletResponse response, MultipartFile picfile, String fileType, String lastImg,String update) throws IOException {

        // 后续现有代码逻辑
// 1.获取前端传递过来的所有有关于文件上传的参数
// MultipartHttpServletRequest mr=(MultipartHttpServletRequest) request;

        //2.获取存储文件的相关内容
//        Map<String,MultipartFile> fileMap=mr.getFileMap();

        //3.获取文件
//        MultipartFile file=fileMap.get("picfile");
        System.out.println(fileType);
        //4.获取该文件的字节数组 方便上传
        byte[] bytes=picfile.getBytes();

        //5.获取文件名称
        String originalFilename=picfile.getOriginalFilename();
        //vhjbh.jpg
        //6.获取文件名的后缀 产生新的名字  .jpg(.exe)
        String suffix=originalFilename.substring(originalFilename.lastIndexOf("."));

        //7.定义一个新的名字  abscjsdc.jpg
        String fileName= UUID.randomUUID().toString();
        fileName=fileName+suffix;

        //8.上传  获取文件的上传位置  图片服务器的位置  http://localhost:8085  /pic/05.jpg
        String filePath="http://localhost:8088";
        //绝对路径 http://localhost:8085/pic/05.jpg
        String realPath=filePath+"/"+fileType+"/"+fileName;
        //相对路径 /pic/05.jpg
        String relativePath="/"+fileType+"/"+fileName;
        System.out.println(relativePath);
        //9.jersy客户端进行上传
        Client client= Client.create();

        //判断
        if(update.equals("false")){
            if(lastImg!=null&&!"".equals(lastImg)){
                WebResource resource=client.resource(lastImg);
                resource.delete();
            }
        }
        //10.获取web资源
        WebResource resource=client.resource(realPath);
        //11.上传
        resource.put(bytes);
        //返回前端进行页面渲染
        JSONObject jo=new JSONObject();
        jo.put("realPath",realPath);
        jo.put("relativePath",relativePath);
        //响应对象的原始方式返回
        response.getWriter().write(jo.toString());

    }


    @RequestMapping("/uploadFileMp3")
    public void uploadFileMp3(HttpServletResponse response, MultipartFile mp3file, String fileType, String lastMp3,String update) throws IOException {

        // 后续现有代码逻辑
// 1.获取前端传递过来的所有有关于文件上传的参数
// MultipartHttpServletRequest mr=(MultipartHttpServletRequest) request;

        //2.获取存储文件的相关内容
//        Map<String,MultipartFile> fileMap=mr.getFileMap();

        //3.获取文件
//        MultipartFile file=fileMap.get("picfile");

        //4.获取该文件的字节数组 方便上传
        byte[] bytes=mp3file.getBytes();

        //5.获取文件名称
        String originalFilename=mp3file.getOriginalFilename();
        //vhjbh.jpg
        //6.获取文件名的后缀 产生新的名字  .jpg(.exe)
        String suffix=originalFilename.substring(originalFilename.lastIndexOf("."));

        //7.定义一个新的名字  abscjsdc.jpg
        String fileName= UUID.randomUUID().toString();
        fileName=fileName+suffix;

        //8.上传  获取文件的上传位置  图片服务器的位置  http://localhost:8085  /pic/05.jpg
        String filePath="http://localhost:8088";
        System.out.println(fileName);
        //绝对路径 http://localhost:8085/pic/05.jpg
        String realPath=filePath+"/"+fileType+"/"+fileName;
        //相对路径 /pic/05.jpg
        String relativePath="/"+fileType+"/"+fileName;
        System.out.println(relativePath);
        //9.jersy客户端进行上传
        Client client= Client.create();

        //判断
        if(update.equals("false")){
            if(lastMp3!=null&&!"".equals(lastMp3)){
                WebResource resource=client.resource(lastMp3);
                resource.delete();
            }
        }
        //10.获取web资源
        WebResource resource1=client.resource(realPath);
        //11.上传
        resource1.put(bytes);
        //返回前端进行页面渲染
        JSONObject jo=new JSONObject();
        jo.put("realPath",realPath);
        jo.put("relativePath",relativePath);
        //响应对象的原始方式返回
        response.getWriter().write(jo.toString());

    }

    @RequestMapping("/deleteFile")
    public void deleteFile(String filePath,HttpServletResponse response) throws IOException{
        Client client=Client.create();
        WebResource resource=client.resource(filePath);
        resource.delete();
        //返回响应
        response.getWriter().write("File deleted successfully");
    }


}